home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / rbcomm31.zip / RBCOMM.DOC < prev    next >
Text File  |  1990-04-28  |  67KB  |  1,585 lines

  1. RBcomm v3.12    Copyright (c) 1989, 1990 Ralf Brown
  2.  
  3. You may redistribute this program provided that you provide unmodified
  4. copies of all files, and do not charge any fee for making the copy.
  5.  
  6. RBcomm is a lean and mean comm program which will run in 41K without file
  7. transfer capability or 65K with file transfer and shell-to-DOS capability.
  8. Since it is so lean, you will not get a lot of the fancy features of other
  9. comm programs, though there are plenty of features to let you get your work
  10. done (I've been using it exclusively for over two years, and have added
  11. features as I've found that I could be more productive with them than
  12. without).
  13.  
  14. Features:
  15.     small (runs in as little as 41K [65K with DSZ, 66K with Puma])
  16.         DESQview-aware
  17.         pop-up menus
  18.     seamless file transfer using DSZ, PCZ, or Puma
  19.     Zmodem autodownload (others such as Puma easily added)
  20.         shell to DOS, using less than 1K while shelled
  21.         keyboard reassignment, powerful keystroke macros
  22.         20-number dialing directory
  23.     ANSI/VT102, VT52, and AVATAR level 0 terminal emulations
  24.         132-column support
  25.  
  26. Registration:
  27.     Continued use of DSZ requires registration with Omen Technology, Inc.
  28.     See the DSZ documentation for details.
  29.  
  30.         If you like RBcomm, send me a picture postcard of some sight in your
  31.     area.  If you don't like RBcomm, feel free to send me a postcard
  32.     anyway, telling me what you don't like.
  33.  
  34. Support:
  35.     none (after all, I'm not getting any money for this).  I will try to
  36.     fix bugs as time allows.
  37.  
  38. DISCLAIMER:  This software is distributed AS IS.  The author disclaims all
  39.     responsibility for any damages which might be incurred as the result
  40.         of using the program.  The software is not guaranteed to work on any
  41.         system other than the author's own.
  42.  
  43.  
  44.         Ralf Brown
  45.     School of Computer Science
  46.         Carnegie Mellon University
  47.         Pittsburgh, PA 15213
  48.  
  49.     ARPA: ralf@cs.cmu.edu
  50.     UUCP: {harvard,ucbvax,uunet}!cs.cmu.edu!ralf
  51.     BIT:  ralf%cs.cmu.edu@cmuccvma
  52.         FIDO: Ralf Brown 1:129/46
  53.  
  54. Files in distribution:
  55.         RBCOMM.DOC      this file
  56.         COMM.COM        the RBcomm main program
  57.         RBCONFIG.COM    the configuration program
  58.     MACRO.COM    the keyboard macro compiler/decompiler
  59.         R?-PIF.DVP      DESQview program information files
  60.     *.MAC        keyboard macro definition sources
  61.         *.RBM           keyboard macro definition files
  62.     *.HLP        help screens for corresponding macro files
  63.  
  64. Availability:
  65.     The newest version is always available on:
  66.        The Gas Passer  1:129/46  File Requests
  67.        (412)648-6326
  68.        24 hours, USR HST 9600
  69.  
  70.        CS.CMU.EDU [128.2.222.173]
  71.        directory /afs/cs.cmu.edu/user/ralf/pub
  72.        You must change directly to this directory due to the way our
  73.          anonymous FTP works.
  74.  
  75.     New versions will also be available here within a few days of release:
  76.        Rosedale Dataline
  77.        (301)866-4554
  78.        24 hours, USR HST 9600
  79.        TP Board
  80.  
  81.        Fidonet nodes participating in DVNet
  82.  
  83.        WSMR-SIMTEL20.ARMY.MIL [26.2.0.4]
  84.        directory PD:<MSDOS2.MODEM>
  85.  
  86. System Requirements:
  87.        at least 41K free memory (65K for file transfers)
  88.        one or more serial ports
  89.        DOS 2.0 or higher
  90.        64K disk space for swap file
  91.  
  92. -------------------------------------------------------------------------------
  93. Installation
  94. ------------
  95.  
  96. Before you use RBcomm for the first time, you need to tell it where to find
  97. its support files and how to talk to the modem.  To do so, copy the RBcomm
  98. files to the directory in which you wish to install them, change to that
  99. directory, and type
  100.  
  101.         RBCONFIG COMM.COM
  102.  
  103. (if COMM.COM is not in the current directory, use the full path, i.e.
  104. C:\COMM\COMM.COM, or RBCONFIG will not be able to find it)
  105.  
  106. Please do not use your original copy.  If you forget to run RBCONFIG, you
  107. will be told to do so when you attempt to run COMM.COM.
  108.  
  109. You will now be asked (via a menu) to fill in several groups of information.
  110.  
  111. Press 'D' to set the directories and extensions to use.
  112.    RBcomm dir:  where the keyboard macro files and dialing directory are stored
  113.    Swap directory: where to store the swap file when running DSZ or COMMAND.COM
  114.         a RAMdisk is ideal for storing the swap file
  115.    Macro file extension:  default extension to apply to keyboard macro files
  116.    Default macro file:    keyboard macro file to load on startup and hangup
  117.         if this file does not exist, RBcomm will use a built-in set
  118.         of default key bindings
  119.  
  120. Press 'S' to select the serial port to use.  You may setup
  121. configurations for ports zero through three, corresponding to COM1
  122. through COM4, as well as the default port to use when not otherwise
  123. indicated in the dialing directory. The values given for the ports 2 and
  124. 3 need not bear any relationship to the numbering of the actual serial
  125. ports in your system (you could, for example, set up ports 2 and 3 to be
  126. the same as port 1 except for the length of the break signal).    RBCOMM
  127. does check that ports 0 and 1 exist according to the BIOS data area,
  128. however, to avoid running in a DESQview window which has incorrect
  129. settings for supporting serial communications.    You may specify a
  130. separate setup string for each port.  The setup string needs to ensure
  131. that the modem echos back any commands it is sent, and asserts carrier
  132. detect only while actually connected with another modem (for
  133. Hayes-compatible "AT" command sets, "E1&C1")
  134.  
  135. Press 'M' to define the modem setup.  In this section, you need to enter
  136. several strings to be sent to the modem.  Note that you may enter a ^M
  137. (carriage return) by pressing Alt-M (hold down the Alt key and press M),
  138. an Esc by pressing Alt-E, and a control-H by pressing Alt-H.
  139.  
  140. Press 'R' to define the modem's responses.  These should be the minimum
  141. substring that uniquely identifies the response.
  142.  
  143. Press 'P' to setup dialing parameters.  You may specify the name of the dialing
  144. directory, how long to try before declaring a time-out, how long to wait before
  145. trying again, and the break length.  Break length specifies the length of the
  146. signal that is sent when you give the break command (default Alt-B) in
  147. multiples of the standard clock tick of 55ms.
  148.  
  149. Press 'Z' to set the parameters for Zmodem transfers.  There are three sets of
  150. parameters for sending files with Zmodem, allowing you to tailor the best
  151. throughput under up to three separate sets of conditions.  I use the "fast"
  152. set for BBSs, and the "medium" set for my Unix account.  The "slow" set is
  153. configured by default for a system which can't handle full streaming.
  154. Note that PCZ will work just fine in place of DSZ if you set the program
  155. pathname to PCZ instead of DSZ, and provide sufficient memory (PCZ needs more
  156. memory than DSZ).
  157.  
  158. The general DSZ parameters (second item on submenu) allow replacable
  159. parameters introduced by a percent sign.  See the EXEC macro command for
  160. details.  The replacable parameters are expanded each time DSZ is invoked.
  161.  
  162. Press 'C' to set the colors you want RBcomm to use.  You may select the
  163. default and "underlined" colors, as well as the colors to use on menus.
  164.  
  165. Press 'V' to determine whether 132-column mode should be enabled, whether to
  166. start in 132- or 80-column mode, and the register values needed to set 132-
  167. column mode.  When running under DESQview, RBcomm can tell DESQview to set
  168. the virtual screen size to 132 columns if you specify zero for AX.
  169.  
  170. Press 'T' to adjust a number of toggles.
  171.    "Local echo" allows you to turn on half-duplex operation by default.
  172.    "Verbose" sets whether to include terminal control sequences in a log file.
  173.    Visual bell specifies whether to flash the screen or sound a beep when a
  174.       ^G is received (internally-generated beeps always use sound).
  175.    "Check for enhanced keyboard" determines whether RBcomm will use the
  176.       enhanced keyboard BIOS calls if it thinks those calls exist.  Some
  177.       systems incorrectly indicate support for those calls.  Set this to
  178.       'N' if RBcomm appears to hang your system.
  179.    "Allow RBcomm to change NumLock" determines whether RBcomm will change the
  180.       state of the NumLock key when it receives the "keypad numeric mode" or
  181.       "keypad application mode" commands.  Disabling the NumLock changes is
  182.       useful for laptop users without a separate number pad.
  183.    "Should backspace send delete" specifies whether the values sent by
  184.       backspace and control-backspace should be exchanged.
  185.  
  186. Finally, press 'O' for miscellaneous options.
  187.    "Time between sends in idle mode" determines how often Idle mode (see
  188.       Alt-I) sends some characters to keep the connection alive.
  189.    "Enable answerback message" allows you to determine whether RBcomm will
  190.       respond to a ^E by sending the answerback message you define, or will
  191.       consider the ^E the start of a cursor positioning command (for
  192.       compatibility with earlier releases of RBcomm).
  193.  
  194. On choosing "Quit" from the menu, you will be asked whether to save the
  195. new configuration to disk.  If you specify that you want to save the changes,
  196. the executable on disk will be updated.
  197.  
  198. ---------------------
  199. DESQview Installation
  200. ---------------------
  201.  
  202. After performing the file copy and configuration described in the previous
  203. section, you need to install RBcomm on the DESQview Open Window menu.  In
  204. DESQview, tap the Alt key to bring up the DESQview menu, then press "O" for
  205. the Open Window menu, and "AP" to add a program.  Select "Other", then fill
  206. in the directory in which you've placed the RBcomm files and press Enter.
  207. You will be given the choice of RBcomm, RBcomm plus DSZ, and RBcomm 132col;
  208. select one or more and press Enter.  Now use "CP" from the Open Window menu
  209. to change the paths and/or the keys for starting RBcomm.
  210.  
  211. The only difference between "RBcomm" and "RBcomm + DSZ" is that the former
  212. allocates the minimum amount of memory for RBcomm to run (41K), which is not
  213. enough to invoke DSZ, but does save 25K when you do not need file transfer
  214. capability.  If your environment is particularly large, you may need to use
  215. Change a Program to increase the window sizes by a K or two.  With certain
  216. screen sizes, you may also need to give RBcomm 1K of system memory (on the
  217. advanced options screen).
  218.  
  219. "RBcomm 132col" and "RBcomm + DSZ" are the same except that the former defines
  220. the maximum screen size to be 20 columns (this is not a mistake, it reduces
  221. the DESQview overhead) and gives RBcomm sufficient system memory to store the
  222. 132x25 screen (be sure to tell RBCONFIG to allow 132-column mode!).  If you are
  223. not interested in the reason, skip the rest of this paragraph.    DV normally
  224. reuses the same section of memory when resizing the virtual screen.  However,
  225. resizing it beyond the maximum defined by the .DVP (and "Change a Program"
  226. only allows 127 columns) causes an entire new buffer to be allocated.  Thus,
  227. minimizing the "maximum screen size" also minimizes the DESQview overhead by
  228. reducing the size of the screen buffer which gets discarded.
  229.  
  230. RBcomm is sufficiently DESQview-aware to ask DV for the size of the screen.
  231. If you want a 120x60 screen, just set the maximum window size to 120 columns
  232. and 60 rows.  DESQview will display as much as it can on your screen, but
  233. RBcomm will use the full size.  If you have enabled 132-column mode with
  234. RBCONFIG, RBcomm will also switch to 132 columns by the given number of rows
  235. when it receives the sequence "<Esc>[?3h".
  236.  
  237. RBcomm will also refuse to load itself twice on the same serial port when
  238. running under DESQview.  However, when shelled to DOS, you can load another
  239. copy in a different window, but make sure to exit the second copy before
  240. returning from the DOS shell, or the first copy will abort.
  241.  
  242. Finally, RBcomm returns the rest of its time-slice to DV if it doesn't need a
  243. full slice.  This improves the performance of programs in other windows.
  244.  
  245. -----------------------------------------------------------------------------
  246. Dialing Directory
  247. -----------------
  248.  
  249. The dialing directory is a plain text file, containing up to twenty entries
  250. (any additional entries will be ignored).  Each entry consists of two lines,
  251. looking like this, with no blank lines between entries:
  252.  
  253.         The Gas Passer
  254.     14126486326|4800N81|B|OPUS|password|\\N2
  255.  
  256. The first line contains the description which will be used in the dialing
  257. directory and when dialing.  The second line contains six fields separated by
  258. vertical bars.  These fields are
  259.  
  260.      1. number to dial
  261.      2. modem parameters, containing in order
  262.       baud rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,
  263.              57600)
  264.       parity    (N for none, E for even, O for odd, S for space,
  265.              M for mark)
  266.           data bits (5, 6, 7 or 8)
  267.           stop bits (1 or 2)
  268.           handshake to use when receive buffer is full
  269.                     (H for hardware RTS/CTS, X for software XON/XOFF)
  270.                     (optional, default is hardware)
  271.       timed call flag
  272.             (if handshake present and the character after the handshake
  273.              is T, a short "bip" will sound about 50 seconds into each
  274.              minute after establishing a connection.  Every five
  275.              minutes, the "bip" sounds twice)
  276.       serial port number
  277.             (if handshake is present, following either the handshake
  278.              character or the "T" timed call flag with a comma and
  279.              the number of the serial port will tell RBcomm to switch
  280.              to that port before dialing)
  281.      3. terminal emulation
  282.       A for ANSI with VT102 extensions
  283.       B for ANSI-BBS (same as ANSI, but clearing screen also homes cursor,
  284.               and character set switching is disabled)
  285.           T for AVATAR (same as ANSI-BBS, but two RBcomm private commands are
  286.                         replaced by the AVATAR level 0 command set)
  287.       V for VT52 with H19 extensions
  288.      4. keyboard macro file to load
  289.      5. password for this system (used by PASSWORD macro command).  Display of
  290.           passwords in the dialing directory may be turned on or off with
  291.           RBCONFIG.
  292.      6. optional modem setup string, minus command lead-in defined by RBCONFIG
  293.       (may include vertical bars).    In the example above, the \\N2 tells
  294.       my modem to use MNP error correction.
  295.  
  296. If the keyboard macro file field is non-empty, the specified file will be
  297. loaded immediately upon successfully connecting with the remote system.  Since
  298. each entry in the dialing directory can specify an independent set of keyboard
  299. macros, you can have a different set of keyboard bindings for each system.
  300. If the macro file specifies a binding for the ONLOAD "key", that macro will be
  301. executed immediately.  Further, if the macro file specifies a binding for the
  302. AUTO "key", that macro will be executed immediately after the ONLOAD macro (if
  303. any).
  304.  
  305. The setup string may contain the following special sequences:
  306.         ~    pause for half a second
  307.         \n   send a line feed
  308.         \r   send a carriage return
  309.         \f   send a form feed
  310.         \t   send a horizontal tab
  311.         \a   send a ^G
  312.         \b   send a backspace
  313.     \!   send a break
  314.         \~   send a tilde
  315.         \\   send a backslash
  316.  
  317. Example modem parameters:
  318.     1200E71X     default COM port, 1200 bps, even parity, seven data
  319.              bits, one stop bit, use Xon/Xoff handshake when
  320.              receive buffer fills up
  321.     19200N81HT,2     COM2, 19,200 bps, no parity, eight data bits, one
  322.              stop bit, use hardware handshake, and sound off
  323.              every minute
  324.  
  325. -----------------------------------------------------------------------------
  326. Keyboard Commands
  327. -----------------
  328.  
  329. The commands described here may be bound to other keys, but the default
  330. keystroke named here may always be used when preceded by Alt-= (hold down
  331. the Alt key and press the equal sign at the upper right of the typewriter
  332. section of the keyboard).
  333.  
  334. Alt-A   attack dial
  335.  
  336.         Repeatedly dials the number you select from the dialing directory
  337.         until a connection is established.  You may also manually enter a
  338.         number to attack-dial.
  339.  
  340. Alt-B   send break
  341.  
  342. Alt-C   call a number
  343.  
  344.         Dial the number you select from the dialing directory (once only).
  345.         You may also manually enter a number to dial.
  346.  
  347.         Note that the modem parameters always have an "H" appended when neither
  348.         "H" nor "X" is present in the dialing directory, since the handshake
  349.         defaults to hardware.
  350.  
  351. Alt-D   DOS shell
  352.  
  353.         Temporarily exit to DOS.  Type "EXIT" to return to comm session.
  354.     RBcomm will swap itself out of memory, leaving only 592 bytes plus
  355.     its copy of the environment in memory.    A 64K swap file will be
  356.         created in the directory you specified with RBCONFIG, and will be
  357.         deleted when you return to the comm session.  File transfers also
  358.         create the temporary swap file.
  359.  
  360. Alt-E   toggle local echo
  361.  
  362.         By default, RBcomm assumes that the remote system will echo any
  363.         characters you need to see.  After pressing Alt-E once, RBcomm will
  364.         display any characters you type without requiring the remote system
  365.         to echo them.  After pressing Alt-E a second time, RBcomm will once
  366.         again assume that the remote system will echo characters.
  367.  
  368. Alt-F    list files
  369.  
  370.         Display a three-up listing of the files matching a given filespec.
  371.  
  372. Alt-G    Go execute a program
  373.  
  374.     You will be prompted to enter a command.  Everything up to the first
  375.     blank is the program to execute (if it starts with an exclamation
  376.     mark ['!'], the rest of the line is passed to COMMAND.COM, otherwise,
  377.     you must specify a full path and extension--searching the path would
  378.     significantly increase the size of the RBcomm executable), and the rest
  379.     of the line is the command tail to pass to the program.
  380.  
  381. Alt-H   hang up
  382.  
  383.         Terminate the connection.  First drops DTR, and if Carrier Detect is
  384.     still active, sends the modem's hangup string.  The default macro set
  385.     is reloaded from disk (if present) or from the built-in defaults.
  386.     If the CLEANUP "key" has a macro binding which includes the LOWER_DTR
  387.     command, DTR will remain dropped.
  388.  
  389. Alt-I   idle
  390.  
  391.         This command allows you to keep a connection alive if you need to step
  392.         away from your computer for a while.  Sends a space followed by a
  393.     backspace every two minutes (configurable with RBCONFIG) until you
  394.     press a key to cancel the command.
  395.  
  396. Alt-J   jump to directory
  397.  
  398.         Pops up a window displaying the current directory.  You may switch to
  399.         a different directory by entering it in place of the displayed
  400.         directory.  Relative paths without a leading slash or backslash will
  401.         change to a subdirectory of the current directory.  If you specify a
  402.         drive letter, that drive will become the current drive as well.
  403.  
  404. Alt-K   unused
  405.  
  406. Alt-L   toggle logging to file
  407.  
  408.         When pressed the first time, you will be asked for the name of a file
  409.         to which all characters received from the remote system will be
  410.         appended.  When pressed the second time, RBcomm will no longer append
  411.     received characters to that file.  If verbose (see Alt-Y) is active,
  412.         all characters will be appended exactly as received, otherwise any
  413.         command sequences embedded in the received data are stripped out.
  414.  
  415. Alt-M   learn macro
  416.  
  417.     When you press Alt-M, you will be asked which key you want to assign
  418.     the macro to.  You may then enter a text string of up to 78 characters
  419.     (if a TEXT macro is already assigned to the key, the current value
  420.     becomes the default value in the input line), using the same editing
  421.     keys used elsewhere.
  422.  
  423. Alt-N   unused
  424.  
  425. Alt-O   send file with slowed-down Zmodem
  426.  
  427.         This command will send the specified file(s) using the "slow" Zmodem
  428.         parameters installed by RBCONFIG.
  429.         (subject to change in future versions)
  430.  
  431. Alt-P   set parameters
  432.  
  433.         This command pops up a menu which allows you to set the following
  434.     parameters:  COM port, speed, parity, parity stripping, handshake,
  435.     backspace translation, visual bell, and terminal emulation.  You may
  436.     also reset the terminal emulation to its initial state, in case the
  437.     remote system leaves you stranded in a strange condition.  Press Esc,
  438.     Enter, or 'R' to exit this menu.
  439.  
  440.         Note that Alt-P will discard any characters which have been received
  441.     but not yet processed, because it always reinitializes the serial
  442.     port when it pops down.
  443.  
  444. Alt-Q    dial queue of numbers
  445.  
  446.         Repeatedly dials each number you specify until a connection is
  447.         established with one of the numbers.  The numbers are dialed in
  448.         round-robin fashion until a connection is established.  A beep will
  449.         sound to notify you of the connection, and the name of the remote
  450.         system and the modem's connect response will be displayed.
  451.  
  452.         You specify the numbers to dial by giving the digit or letter as it
  453.         appears in the dialing directory (case is ignored on letters).  A
  454.         number may be specified more than once, and will be dialed more than
  455.         once during a round of dialing attempts.  As a shortcut, specifying
  456.         an asterisk ('*') instead of a list of numbers will dial all numbers
  457.         in the dialing directory in order.
  458.  
  459. Alt-R   receive file
  460.  
  461.         Pops up a menu allowing you to select the protocol with which you wish
  462.         to receive a file from a remote system.  Press ESCape if you do not
  463.         wish to receive a file.  Note that Zmodem features automatic download,
  464.         so you do not need to press Alt-R unless you wish to give DSZ
  465.     additional parameters.    You may also add additional autodownloading
  466.     protocols--see the WHEN macro command in the next section.
  467.  
  468.     Not listed on the menu:  ^G, ^Y, and ^Z pop up a parameter prompt,
  469.     then proceed with the download specified by the corresponding
  470.     non-control letter.
  471.  
  472. Alt-S   send file
  473.  
  474.         Pops up a menu allowing you to select the protocol with which you wish
  475.         to send a file to a remote system.  Press ESCape if you do not wish to
  476.         send a file.  After selecting a protocol, you will be asked to enter
  477.         the name of the file to send (Ymodem, Ymodem-G, and Zmodem allow
  478.         wildcards and multiple filespecs).
  479.  
  480.         If you press the control character corresponding to the desired
  481.         protocol, the file(s) will be deleted after a successful transfer.
  482.         For batch transfers, only the files corresponding to the first
  483.         filespec are deleted.
  484.  
  485.     Also unlisted on the menu:  pressing 'R' (or ^R) will send with
  486.     Zmodem using the "medium" parameters and pressing 'S' (or ^S) will
  487.     send the file with Zmodem using the "slow" Zmodem parameters installed
  488.     by RBCONFIG.
  489.  
  490. Alt-T   type ASCII file to other system
  491.  
  492. Alt-U   load/save user interface as defined in keyboard macro file
  493.  
  494.         Note that keyboard macro files are always stored in the RBcomm
  495.         directory as defined by RBCONFIG.
  496.  
  497.         WORDSTAR.RBM and EMACS.RBM contain the keyboard definitions for using
  498.         WordStar (tm) and Emacs cursor movement commands on the cursor pad
  499.         (i.e. Home goes to the start of the line, etc.)  EMACS.RBM also binds
  500.         all Alt-letter keys to be Esc-letter, making the Alt key into a true
  501.         Emacs meta-key.  You will need to use the Alt-= override to use the
  502.         RBcomm commands while EMACS.RBM is loaded.
  503.  
  504.      *    RBcomm v3.1 and later macro files are COMPLETELY INCOMPATIBLE        *
  505.      *    with earlier macro files.  You must recompile all your macro files. *
  506.  
  507. Alt-V    View file
  508.     (toggle verbose, which used to be on Alt-V, is now on Alt-Y)
  509.  
  510.     Page through a text file.  This is a very minimal file lister.
  511.     Press the space bar to display next screenfull, Escape to quit.
  512.  
  513. Alt-W   unused
  514.  
  515. Alt-X   exit
  516.  
  517.         Terminate RBcomm.  If you are still connected to the remote system
  518.         (Carrier Detect asserted), you will be asked whether or not to hang
  519.         up.
  520.  
  521. Alt-Y    toggle verbose
  522.     (previously Alt-V)
  523.  
  524.         Toggles the verbose mode used with Alt-L.  When not logging, the
  525.         control characters which are not used for terminal commands will be
  526.         displayed as ^X when received from the remote system.  When logging to
  527.         a file, terminal command sequences will only be stored in the log file
  528.         if verbose mode is ON.
  529.  
  530. Alt-Z    send file with Zmodem
  531.  
  532.         This command will send the specified file(s) with the "medium" Zmodem
  533.         parameters installed by RBCONFIG.
  534.  
  535. Alt-1,2,3,4,5,6,7,8,9,0  dial first ten numbers in dialing directory
  536.  
  537. Alt-F1 through Alt-F10   dial 11th through 20th number in dialing directory
  538.  
  539. F1      pop up help screen
  540.         
  541.     Displays the contents of the help file for the current macro file
  542.     (if that file is not found, RBcomm attempts to use RBCOMM.HLP).
  543.     Press an Alt or function key to execute the default binding for the
  544.     key.  Escape exits immediately, and any other key pages through the
  545.     help file (if more than 20 lines long).
  546.  
  547. Alt-=   use default binding of next keystroke
  548.  
  549.         If the keyboard has been redefined, pressing Alt-= will allow you to
  550.     access the built-in default definitions (as listed in this section).
  551.     Press Alt-= and then immediately press the key whose default
  552.     definition you want to use.
  553.  
  554. -----------------------------------------------------------------------------
  555. Warnings
  556. --------
  557.  
  558. Don't try to load a TSR while shelled to DOS.  RBcomm won't be able to swap
  559. itself back in and will have to abort.  Your connection will not be broken,
  560. however.
  561.  
  562. Don't mess with the swap file while shelled.  You'll be sorry....  (RBcomm is
  563. able to detect a missing or truncated swap file on returning, but not other
  564. changes)
  565.  
  566. IMPORTANT:  if you are swapping to a floppy drive, DO NOT UNDER ANY
  567. CIRCUMSTANCES replace that floppy disk while shelled to DOS or running a file
  568. transfer.  You will definitely trash the file allocation tables and directory
  569. of the second disk.  This is a problem with DOS itself (at least through
  570. 3.10, later versions may have corrected it) when faced with a diskette
  571. change while a file is open on the diskette which gets removed.  The swap
  572. file is such an open file.
  573.  
  574. -----------------------------------------------------------------------------
  575. Known Bugs and Limitations
  576. --------------------------
  577.  
  578. Any OPEN_LOG command in the OnLoad macro will fail when the macro is loaded
  579. manually.  There is no easy fix for this one, as it is tied in deeply with
  580. the way windows and the terminal emulator interact.
  581.  
  582. -----------------------------------------------------------------------------
  583. Macro Compiler
  584. --------------
  585.  
  586. Syntax:  MACRO {t|m} infile outfile
  587. where 't' specifies compilation from text file to keyboard macro file
  588. and 'm' specifies decompilation from macro file to text file
  589. default extensions are .MAC for text files and .RBM for macro files
  590.  
  591.  
  592. Important Note:
  593.     RBcomm v3.1 and later macro files are COMPLETELY INCOMPATIBLE
  594.     with earlier versions.    You must recompile all your macro files.
  595.  
  596. -------------------
  597. Macro File Commands
  598. -------------------
  599.  
  600. Each command has the following form:
  601.  
  602.     keyname  commandword   [args]
  603.  
  604. where keyname specifies to which key the command is to be bound.  Keynames
  605. (which are not case-sensitive) are:
  606.     F1 through F12 for the function keys
  607.        +F1 through +F12 for the shifted function keys
  608.        ^F1 through ^F12 for the control function keys
  609.        @F1 through @F12 for the alt-function keys
  610.        @A through @Z for the alt-letter keys
  611.        @1 through @0 for the alt-digits
  612.        Gray+ and Gray- for plus and minus keys on keypad
  613.        Left, Right, Up, Down for the cursor keys on the numeric pad
  614.        Home, End, PgUp, PgDn, Ins, and Del for the other keypad keys
  615.        KP5 for the '5' key on the number pad (enhanced keyboard)
  616.        ^Home, etc. for the control versions of the numberpad keys
  617.        CP_Home     Home key on gray cursor pad
  618.        CP_Up     Up arrow on gray cursor pad
  619.        CP_Down     Down arrow on gray cursor pad
  620.        CP_Enter  Enter key on cursor pad
  621.         etc.
  622.        ^Break     for control-break
  623. and various other alt-key combinations.
  624.  
  625. There are also some pseudo-keys to which you may assign a macro:
  626.        "Auto" is executed automatically when a connection is established
  627.        "OnLoad" is executed any time the macro file is loaded into memory
  628.        "CleanUp" is executed when hanging up if carrier detect is active
  629.  
  630. You may assign macros to control keys by specifying "^x" as the key name,
  631. where "x" is the control key you want to use.  Similarly, you may assign
  632. a macro to a regular key by preceding the character representing the key
  633. by a backslash.   Note that macros are never in effect when you are
  634. prompted for information by RBcomm; they only affect what gets sent to
  635. the remote system.
  636.  
  637. Finally, you may use "#nnn" where nnn is the decimal scancode of the key
  638. you wish to assign the macro to (values of 200 through 255 are reserved,
  639. 167 through 199 are currently unused by any key combinations supported
  640. by the BIOS).
  641.  
  642. Note that the cursor pad keys will execute the binding for the
  643. corresponding number pad key if not specifically bound (but not vice
  644. versa).  CP_Enter defaults to the binding for @Enter.
  645.  
  646. The commandword is not case-sensitive, but you must include the
  647. underscore if present and use the entire commandword (abbreviations are
  648. not supported).
  649.  
  650. With the exception of the ANSWERBACK, TEXT, WAITFOR, and WHEN commands,
  651. all commands which take a string argument pop up a prompt if the string
  652. is empty (i.e. "").  Strings may include the following special sequences:
  653.     ^x   specified control character
  654.         ^?   ASCII DEL (127)
  655.         \a   ^G (bell)
  656.     \b   backspace
  657.     \e   escape
  658.     \f   form feed
  659.     \n   line feed
  660.         \r   carriage return
  661.     \t   horizontal tab
  662.     \v   vertical tab
  663.     \\   backslash
  664.     \^   carat
  665.     \0   ASCII NUL (for TEXT command only)
  666. For character arguments, you may specify either
  667.     'c'
  668. where the character c is interpreted as for a string, or you may specify its
  669. ASCII value.
  670.  
  671. Everything from a semicolon (unless it is in a string) to the end of the line
  672. is considered a comment, as are blank lines.
  673.  
  674. If a line starts with #include rather than a key name, the specified file
  675. will be compiled into the macro file as if it were part of the current text
  676. file.  Note that the string is processed just like any other strings, so that
  677. you must double any backslashes (or use forward slashes, instead).
  678. Format:
  679.     #INCLUDE  "d:/path/filename"
  680. an extension of .MAC is assumed if no extension is given, and the drive letter
  681. and path are optional (default is current drive and directory).  #INCLUDEs may
  682. be nested up to twelve deep.
  683.  
  684. If a line starts with #ignore rather than a key name, any subsequent
  685. occurrences of the keyname following the #ignore will be ignored, just as if
  686. you had already defined a binding for the key.    This is useful when
  687. #include'ing a file if you do not want all the bindings in the included file.
  688. Format:
  689.        #IGNORE    <keyname>
  690.  
  691. ABORT
  692.     abort the current macro or operation as if the user had pressed Esc.
  693.  
  694. ABORT_UNTIL
  695.     abort any currently executing UNTIL command after the command(s) it
  696.     controls complete.  Useful mainly in conjunction with the DELAYED
  697.     command to provide a timeout on UNTIL loops.
  698.  
  699.     See also DELAYED, UNTIL.
  700.  
  701. ANSWERBACK "string"
  702.     sets the answerback message to the specified string.  If the string is
  703.     empty (i.e. ""), answerback is disabled (making ^E a cursor-positioning
  704.     command), otherwise, answerback is enabled.
  705.  
  706. AUTO_ZMODEM
  707.     reenable Zmodem autodownload if it has been canceled by an ENDWHEN.
  708.     This is functionally equivalent to
  709.         WHEN 0 "**^XB00"
  710.           RECEIVE 'Z'
  711.     although implemented differently.  Zmodem autodownload is also
  712.     reenabled when hanging up or dialing.
  713.  
  714.     WARNING: do not invoke while autodownload is enabled, as you will wind
  715.        up invoking a download multiple times for one download request....
  716.  
  717.     See also ENDWHEN, WHEN.
  718.  
  719. AWAITKEY
  720.     pause until a key is pressed.  The next function which reads a key
  721.     will read the key which was pressed.  Returns immediately if there
  722.     was any typeahead (including RBcomm's key stack).
  723.  
  724.     See also KFLUSH.
  725.  
  726. BEEP
  727.     sound the bell.  Useful mainly in conjunction with the MULTI or
  728.     DELAYED commands (see below).
  729.  
  730. BREAK
  731.     send a break to the remote system
  732.  
  733. CALL keyname
  734.         execute the macro (if any) bound to the specified key and then continue
  735.         executing current macro (if inside a MULTI).
  736.  
  737.     See also PUSHKEY.
  738.  
  739. CANCEL_DELAYED which
  740.     cancel the specified delayed action.  Currently supported:
  741.            ALL    cancel all delayed actions
  742.            LAST   cancel the last executed DELAYED.  If called a second
  743.               time without an intervening DELAYED, the second call
  744.               is ignored.
  745.  
  746.     See also DELAYED.
  747.  
  748. CANCEL_NOTIFY
  749.     remove the notify window immediately instead of at the end of the
  750.     configured period of time.
  751.  
  752. CHDIR "dir"
  753.     change the DOS default directory to the specified directory.
  754.  
  755. CLOSE_LOG
  756.     close the current log file.  If logging is off, this command has no
  757.     effect.
  758.     See also OPEN_LOG, TOGGLE_LOG.
  759.  
  760. DELAYED seconds
  761.         execute the macro on the next line (or lines if it is a MULTI) the
  762.         given number of seconds from now.  You may have up to six delayed
  763.     commands active at any given time.  The maximum delay time is 3600
  764.     seconds (one hour); the macro compiler will complain if you attempt
  765.         to use a greater delay.
  766.  
  767.         Note: the command may actually execute later than requested if RBcomm
  768.           is busy processing incoming characters at the time the command should
  769.       execute.  The command will execute as soon as RBcomm empties its
  770.       receive buffer.
  771.  
  772.     See also CANCEL_DELAYED, WHEN.
  773.  
  774. DIAL number redial
  775.     dial the specified entry from the dialing directory, and use attack-
  776.     dialing if 'redial' is nonzero.  If 'number' is 255, pops up the
  777.     dialing directory to find out which number to dial.
  778.  
  779.     See also LISTDIAL.
  780.  
  781. ECHO ON|OFF
  782.     ECHO ON forces half-duplex (local echo on) mode, ECHO OFF forces
  783.     full-duplex (local echo off).
  784.     (see Alt-E)
  785.  
  786.     See also TOGGLE_ECHO.
  787.  
  788. ENDWHEN which
  789.     cancel the specified WHEN command.  Currently supported:
  790.        ALL           cancel all WHENs except the Zmodem autodownload
  791.        ALL_XFER    cancel all WHENs including autodownload
  792.        LAST        cancel the last executed WHEN.  A second call without
  793.                an intervening WHEN acts the same as ENDWHEN ALL.
  794.  
  795.     see also WHEN.
  796.  
  797. EXEC "command-to-execute"
  798.     everything up to the first blank in the string specifies the program to
  799.     execute (either full path and extension, or "!prog" to let COMMAND.COM
  800.     find and fire up the program), the remainder of the string is the
  801.     command tail to pass to the program.  Note that a following IF
  802.     command will always consider the EXEC to have succeeded if you use the
  803.     !prog form (that's because COMMAND.COM does not pass on the completion
  804.     status of the program it runs).
  805.  
  806.     Within the command tail, a percent sign introduces a variable
  807.     substitution.  The following sequences are supported:
  808.         %a     hexadecimal I/O base address being used
  809.         %D     current directory, including drive
  810.         %i     IRQ number being used (0-15)
  811.         %I     get input from user.  The following characters up to the next
  812.          percent sign are used as the prompt and then discarded.
  813.         %M     current macro file name
  814.         %p     port number (1-4)
  815.         %P     port parameters, in same format as dialing directory
  816.          display
  817.         %s     current serial port speed
  818.         %%     a percent sign
  819.  
  820.     See also IF, SHELL.
  821.  
  822. EXIT
  823.     End RBcomm.  Will prompt you whether or not to hang up if you are
  824.     still connected to another system.
  825.  
  826. FDELETE "filespec"
  827.     delete the file(s) named by filespec (which may include wildcards).
  828.     Note that there is no confirmation requested, so use this command
  829.     with care!!!
  830.  
  831.     See also FILES.
  832.  
  833. FILES "filespec"
  834.     display a three-up list of the files matching the filespec
  835.  
  836.     See also FDELETE.
  837.  
  838. HANGUP
  839.     hang up.  Executes macro bound to "CleanUp" before actually hanging
  840.     up if carrier detect is active.
  841.  
  842. HELP
  843.     pop up the help screen
  844.  
  845. IDLE
  846.     go into idle mode, sending a blank followed by a backspace every 2
  847.     minutes.  Press Esc to end idle mode.
  848.  
  849.     Both the interval and the sequence sent by idle mode may be configured
  850.     with RBCONFIG.
  851.  
  852. IF    SUCCESS|FAILED|CONNECTED|OFFLINE
  853.     IF SUCCESS and IF FAILED conditionally execute a command based on the
  854.     completion status of an immediately preceding EXEC, SHELL, SEND,
  855.     SENDFILE, RECEIVE, RECEIVEFILE, or WAITFOR.  The following line (or
  856.     lines if a MULTI) is executed only if that prior command was
  857.     successful in the case of IF SUCCESS, or if it failed in the case of
  858.     IF FAILED.
  859.  
  860.     IF CONNECTED executes the following command if carrier detect is
  861.     asserted, while IF OFFLINE executes the following command if
  862.     carrier detect is deasserted.
  863.  
  864.     For example, if you want to execute a program only after failing to
  865.     see a particular string, you would use
  866.  
  867.         MULTI
  868.         WAITFOR 10 "don't run program"
  869.         IF FAILED
  870.             EXEC "!someprog args"
  871.         END
  872.  
  873.     See also ABORT_UNTIL, EXEC, SHELL, SEND, RECEIVE, WAITFOR, UNTIL.
  874.  
  875. KFLUSH
  876.     empty the keyboard buffer (including RBcomm's key stack).
  877.  
  878.     See also AWAITKEY.
  879.  
  880. LEARN
  881.     start learning a keyboard macro
  882.  
  883.     See also UI_MENU.
  884.  
  885. LISTDIAL "numbers"
  886.     dial the specified numbers from the dialing directory repeatedly until
  887.     a connection is established with one of the numbers.  If the empty
  888.     string is specified, the user will be prompted for the numbers to dial.
  889.  
  890.     See also DIAL.
  891.  
  892. LOAD_MACRO "file"
  893.     load the specified macro file from the RBcomm directory.  If an empty
  894.     filename is given, the user will be prompted for a name, which
  895.     defaults to the name of the currently loaded macro file.
  896.  
  897.     See also SAVE_MACRO, UI_MENU.
  898.  
  899. LOWER_DTR
  900.     requests that DTR remain dropped after the next HANGUP command.  The
  901.     best place to put this command is in your CleanUp macro.
  902.  
  903. MESSAGE row col msg
  904.     display the specified message starting at the given row and column on
  905.     the screen.  If either row or column is 255, use the current row or
  906.     column.
  907.  
  908. MESSAGEBOX msg
  909.     if running under TopView or DESQview, a window with the given message
  910.     will pop up for three seconds.    This command is ignored otherwise.
  911.  
  912.     The message is limited to 40 characters, anything beyond that is
  913.     ignored.
  914.  
  915.     See also NOTIFY, CANCEL_NOTIFY.
  916.  
  917. MULTI
  918.     the following lines, up to but not including a line starting with END,
  919.     are assigned to the specified key.  The macros assigned to the key
  920.     may not total more than 253 bytes, and the macro compiler will
  921.     complain if they do.
  922.  
  923.         The format of the following lines is the same as for a regular macro,
  924.     except that you do not specify a keyname.  For example, to make
  925.     shift-F2 switch terminal emulation to VT52, use
  926.  
  927.     +F2    MULTI
  928.         PUSHKEY 13 0
  929.         PUSHKEY 'V' 0
  930.         PARAM_MENU
  931.         END
  932.  
  933.     Note: you may use { and } on separate lines as synonyms for MULTI
  934.     and END.
  935.  
  936. NOTIFY    msg
  937.     if running under TopView or DESQview, and RBcomm determines that it is
  938.     in the background, a window with the given message will pop up for
  939.     three seconds.    This command is ignored otherwise.
  940.  
  941.     The message is limited to 40 characters, anything beyond that is
  942.     ignored.
  943.  
  944.     See also CANCEL_NOTIFY, MESSAGEBOX.
  945.  
  946. OPEN_LOG  "file"
  947.     if logging is on, the current log file will be closed.    Then, the
  948.     specified log file will be opened (if no name is given, a prompt is
  949.     popped up).
  950.  
  951.     See also CLOSE_LOG, TOGGLE_LOG, RECEIVE.
  952.  
  953. PARAM_MENU
  954.     pop up the "Set Parameters" menu
  955.  
  956. PASSWORD
  957.         send the password defined in the dialing directory.  Does not send
  958.         a carriage return or any other terminating sequence.
  959.  
  960.     See also TEXT, TYPE.
  961.  
  962. PAUSE num-ticks
  963.     halt execution for num-ticks/18 seconds.  Useful mainly in conjunction
  964.     with the MULTI command (see above).
  965.  
  966. PUSHKEY key scan
  967. or
  968. PUSHKEY keyname
  969.     put the specified key/scancode pair onto RBcomm's internal keyboard
  970.     stack, where the last pushed pair will be the next keystroke read
  971.         by RBcomm.  The stack is currently eight keystrokes in size, and any
  972.     PUSHKEY executed while the stack is full will simply be ignored.
  973.     "keyname" may be the name of any keystroke recognized by the macro
  974.     compiler.
  975.  
  976.     Useful mainly in conjunction with the MULTI command (see above).
  977.  
  978. RECEIVE 'type'
  979.     start receiving a file with the specified protocol
  980.           0    prompt for protocol
  981.           'A'  ASCII (capture to file--equivalent to OPEN_LOG "")
  982.           'X'  Xmodem with parameters
  983.           'K'  Xmodem-K with parameters
  984.           'Y'  Ymodem
  985.               '^Y' Ymodem with parameters
  986.           'G'  Ymodem-G
  987.               '^G' Ymodem-G with parameters
  988.           'Z'  Zmodem
  989.               '^Z' Zmodem with parameters
  990.  
  991.     See also IF, OPEN_LOG, SEND, TYPE.
  992.  
  993. RECEIVEFILE 'type' "parameters"
  994.     start receiving using the specified protocol (which may be any of the
  995.     ones listed for RECEIVE except 0 or 'A'), passing the specified
  996.     parameters to the file transfer module.  Unlike RECEIVE, this command
  997.     will not pop up any messages unless it is unable to load the file
  998.     transfer module; in case of an error, the completion status is set
  999.     to FAILED.
  1000.  
  1001.     See also RECEIVE, SENDFILE.
  1002.  
  1003. SAVE_MACRO "file"
  1004.     save the current macros to the specified file, located in the RBcomm
  1005.     directory.
  1006.  
  1007.     See also LOAD_MACRO, UI_MENU.
  1008.  
  1009. SEND 'type'
  1010.     prepare to send a file with the specified protocol
  1011.           0    prompt for protocol
  1012.           'A'  ASCII
  1013.           'X'  Xmodem
  1014.           'K'  Xmodem-K
  1015.           'Y'  Ymodem
  1016.           'G'  Ymodem-G
  1017.           'Z'  Zmodem
  1018.           'R'  reduced-speed Zmodem
  1019.           'S'  slow Zmodem
  1020.     control character versions of any of the above ('^X', '^Y', etc) will
  1021.     delete the file(s) corresponding to the first filespec after sending.
  1022.  
  1023.     See also IF, SENDFILE, RECEIVE, TYPE.
  1024.  
  1025. SENDFILE 'type' "file"
  1026.     send the specified file with the given protocol, which may be any of
  1027.     the ones listed for SEND except 0 or 'A'.  Unlike SEND, this command
  1028.     will not pop up any messages unless it is unable to load the file
  1029.     transfer module; in case of an error, the completion status is set
  1030.     to FAILED.
  1031.  
  1032.     See also RECEIVEFILE, SEND.
  1033.  
  1034. SHELL
  1035.     shell to DOS
  1036.  
  1037.     See also EXEC, IF.
  1038.  
  1039. TEXT "msg"
  1040.     send the specified characters out the comm port.  "msg" is limited to
  1041.     253 characters.
  1042.  
  1043. TOGGLE_ECHO
  1044.     toggle the state of local echoing
  1045.  
  1046.     See also ECHO.
  1047.  
  1048. TOGGLE_LOG
  1049.     if logging is currently on, turns off logging received data to file
  1050.     if logging is off, pops up a prompt for the name of the capture file
  1051.  
  1052.     See also OPEN_LOG, CLOSE_LOG.
  1053.  
  1054. TOGGLE_VERBOSE
  1055.     toggle the state of verbose mode (see Alt-V)
  1056.  
  1057.     See also VERBOSE.
  1058.  
  1059. TRANSLATE_BS ON|OFF
  1060.     TRANSLATE_BS ON turns on backspace/delete swapping, TRANSLATE_BS OFF
  1061.     turns it off.
  1062.  
  1063. TYPE "file"
  1064.     send the specified file to the remote system as a stream of ASCII
  1065.     characters.  Pauses at the end of each line and waits for the carriage
  1066.     return to be echoed (will continue after three seconds even if the
  1067.     echo is not seen).  Equivalent to
  1068.         SEND 'A'
  1069.     if no filename is given.
  1070.  
  1071.     See also SEND.
  1072.  
  1073. UI_MENU
  1074.     pop up the load/save macro menu
  1075.  
  1076.     See also LEARN, LOAD_MACRO, SAVE_MACRO.
  1077.  
  1078. UNTIL SUCCESS|FAILED|CONNECTED|OFFLINE
  1079.     repeatedly executes the following line (or lines if a MULTI) until
  1080.     the status of the last action is either success for UNTIL SUCCESS
  1081.     or failure for UNTIL FAILED.   UNTIL CONNECTED repeatedly executes
  1082.     the following command until carrier detect becomes active, while
  1083.     UNTIL OFFLINE repeats until carrier detect drops.
  1084.  
  1085.     See also ABORT_UNTIL, IF.
  1086.  
  1087. VERBOSE ON|OFF
  1088.     VERBOSE ON turns on verbose mode, VERBOSE OFF turns off verbose mode.
  1089.     (see Alt-V)
  1090.  
  1091.     See also TOGGLE_VERBOSE.
  1092.  
  1093. VIEW "filename"
  1094.     display the specified file one screenfull at a time.  Pops up a prompt
  1095.     if the null filename is given.
  1096.  
  1097.     Pressing the space bar displays the next screen, Escape exits the
  1098.     file view.
  1099.  
  1100. WAITFOR timeout "wait-string"
  1101.     wait up to timeout seconds for the specified string of characters to
  1102.     arrive over the comm port.  Useful mainly in conjunction with the
  1103.     MULTI command (see below).
  1104.  
  1105.     You may test whether the string was actually received by following
  1106.     the WAITFOR with IF SUCCESS or IF FAILED (unlike versions prior to
  1107.     3.11, a failed WAITFOR does not abort the MULTI it is a part of).
  1108.  
  1109.     See also IF.
  1110.  
  1111. WHEN    iterations "when-string"
  1112.     execute the command on the following line (or lines if it is a MULTI)
  1113.     whenever the "when-string" is encountered in the data stream coming
  1114.     from the remote system.  After the string has been encountered
  1115.     "iterations" times, the WHEN is automatically canceled (if iterations
  1116.     is zero, the WHEN must be explicitly canceled with ENDWHEN).
  1117.     You may have up to six WHENs active at any time (seven if you cancel
  1118.     Zmodem autodownload [see ENDWHEN below]).  WHENs are canceled on
  1119.     hanging up or dialing a number.
  1120.  
  1121.     This can be an extremely powerful command.  For example, you can
  1122.     implement another autodownloading (or uploading!) protocol simply by
  1123.     adding
  1124.         WHEN 0 "start-string"
  1125.            EXEC "xfer-program parms"
  1126.     to the AUTO or OnLoad macro.  On CompuServe, you can make Ymodem
  1127.     autodownloading by adding
  1128.                 WHEN 0 "initiate YMODEM receive"
  1129.            RECEIVE 'Y'
  1130.         to the OnLoad macro.
  1131.  
  1132.     You can enable Puma autodownload by adding the lines
  1133.         WHEN 0 "^X^H^XPuma^X^H^X"
  1134.            RECEIVE 'P'
  1135.     to the OnLoad macro [thanks to Matthew Thomas for publishing his
  1136.     autodownload string!].
  1137.  
  1138.     See also DELAYED, ENDWHEN.
  1139.  
  1140. -----------------------------------------------------------------------------
  1141. Terminal Emulation
  1142. ------------------
  1143.  
  1144. RBcomm supports four terminal emulations.  ANSI provides standard ANSI
  1145. escape sequences plus most VT102 and many VT200 escape sequences.  BBS
  1146. is identical to ANSI except that clearing the screen with Esc-[-J or
  1147. Esc-[-2-J also homes the cursor, and character set switching is
  1148. disabled.  AVATAR is identical to BBS except that two of RBcomm's
  1149. private commands are replaced by the AVATAR level 0 command set.
  1150. Finally, VT52 replaces many of the Esc-letter sequences in ANSI with the
  1151. actions a VT52 or H19 would perform.  In addition, in all of these
  1152. modes, RBcomm has its own, much more compact command set.
  1153.  
  1154. ------------------
  1155. Control Characters
  1156. ------------------
  1157.  
  1158. ^A      move cursor up a line
  1159. ^B      move cursor right one position
  1160. ^C      move cursor down a line
  1161. ^D      move cursor left one position, does not wrap to previous line
  1162. ^E    if answerback has been enabled, send the answerback string to the
  1163.     remote system.    Otherwise, the following two characters (less 32)
  1164.     specify the new cursor column and row.    i.e. ^E-blank-blank homes
  1165.     the cursor.
  1166. ^F      special sequences (see below)
  1167. ^G      sound bell, or flash screen if visible bell enabled
  1168. ^H      move cursor left one position, wraps to previous line
  1169. ^I      move to next tab stop
  1170. ^J      move cursor down a line, scrolling screen when at bottom
  1171. ^K      insert a blank line
  1172. ^L      clear screen and home cursor
  1173. ^M      move cursor to start of line
  1174. ^N      "shift out"--switch to G1 character set (VT100)
  1175. ^O      "shift in"--switch to G0 character set (VT100)
  1176. ^P      clear rest of line
  1177. ^R      clear rest of screen
  1178. ^T      change character attribute to underlined
  1179. ^U      clear underlined attribute
  1180. ^V      (AVATAR) start of an AVATAR command (see below)
  1181.         (other)  change to reverse video
  1182. ^W      cancel reverse video
  1183. ^X      insert a blank at the cursor's position, push rest of line right
  1184. ^Y      (AVATAR) repeat the following character the number of times specified
  1185.                  by the second character after the ^Y
  1186.         (other)  delete character at cursor position, rest of line shifts left
  1187. ^Z      delete line cursor is on
  1188. ^[      escape sequence (see below)
  1189. ^\      turn on insert mode
  1190. ^]      turn off insert mode
  1191. ^_    the following two characters specify the new cursor location as in ^E
  1192.     with answerback disabled.
  1193.  
  1194. ----------------
  1195. Escape Sequences
  1196. ----------------
  1197. Esc-blank-F  turn off eight-bit control characters
  1198. Esc-blank-G  turn on eight-bit control characters.  When eight-bit control
  1199.          characters are enabled, many of the characters from 80h through
  1200.          9Fh are equivalent to Esc-<char-40h>.
  1201. Esc-(   (VT100) next character ('0', '1', '2', 'A', or 'B') sets G0 character
  1202.         set
  1203. Esc-)   (VT100) next character ('0', '1', '2', 'A', or 'B') sets G1 character
  1204.         set
  1205. Esc-#   (VT100) next character sets character size
  1206.         only '8' implemented -- fill screen with 'E's for alignment display
  1207. Esc-7   save cursor
  1208. Esc-8   restore cursor
  1209. Esc-<   set terminal emulation to ANSI
  1210. Esc-=    set keypad application mode (if allowed to change NumLock by RBCONFIG)
  1211. Esc->    set keypad numeric mode (if allowed to change NumLock by RBCONFIG)
  1212. Esc-@   turn on insert mode
  1213. Esc-A   move cursor up
  1214. Esc-B   move cursor down
  1215. Esc-C   move cursor right
  1216. Esc-D   (ANSI) "index"--move cursor down, scroll if at bottom
  1217.         (VT52) move cursor left
  1218. Esc-E   (ANSI) move to start of next line, scroll if at bottom
  1219.     (VT52) clear screen
  1220. Esc-F   (ANSI) not implemented
  1221.         (VT52) select graphics character set
  1222. Esc-G   (ANSI) not implemented
  1223.         (VT52) select text character set
  1224. Esc-H   (ANSI) set horizontal tab at current position
  1225.         (VT52) home cursor
  1226. Esc-I   (ANSI) horizontal tab
  1227.     (VT52) reverse linefeed, scrolls down if already on top line
  1228. Esc-J   (ANSI) not implemented
  1229.         (VT52) clear to end of screen
  1230. Esc-K   (ANSI) not implemented
  1231.         (VT52) clear to end of line
  1232. Esc-L   (ANSI) not implemented
  1233.         (VT52) insert a new line at cursor
  1234. Esc-M   (ANSI) "reverse index"--cursor up, reverse scroll if at top
  1235.         (VT52) delete cursor line
  1236. Esc-N   (ANSI) not implemented
  1237.         (VT52) delete char at cursor, rest of line shifts left
  1238. Esc-O   (ANSI) not implemented
  1239.         (VT52) turn off insert mode
  1240. Esc-Y   move cursor, next two characters are row + 32, column + 32
  1241. Esc-Z   request identification
  1242.         (ANSI) RBcomm returns the string "rbcommN.NNx" where N.NN is the
  1243.                version number and "x" is a single byte identifying implemented
  1244.                capabilities
  1245.                    bit 0: screen storing implemented (set)
  1246.                    bit 1: file transfer implemented (set)
  1247.                    bit 6: always set (makes character printable)
  1248.                    remaining bits reserved
  1249.         (VT52) RBcomm returns the string Esc-/-Z, indicating a VT100 emulating
  1250.                a VT52.
  1251. Esc-[   ANSI sequence, see below
  1252. Esc-]    Operating System Command.  The following characters through an Esc-\
  1253.     sequence (maximum 80 characters) are skipped, as this command has
  1254.     no effect.
  1255. Esc-^    ANSI Privacy Message.  The following characters through an Esc-\
  1256.     sequence (maximum 80 characters) are accumulated.  If running under
  1257.     DESQview, the first 40 are displayed in the notification window;
  1258.     otherwise, the accumulated characters are discarded.
  1259. Esc-_    Application Program Command.  The following characters through an
  1260.     Esc-\ sequence (maximum 80 characters) are skipped, as this command
  1261.     has no effect.
  1262. Esc-c   reset to initial state
  1263. Esc-j    save cursor position       (Heath H19)
  1264. Esc-k    restore cursor position    (Heath H19)
  1265. Esc-l    erase line           (Heath H19)
  1266. Esc-p   turn on bold characters
  1267. Esc-q   turn off bold characters
  1268. Esc-v    turn on line wrap       (Heath H19)
  1269. Esc-w    turn off line wrap       (Heath H19)
  1270. Esc-z    reset terminal emulation   (Heath H19)
  1271.  
  1272.  
  1273. --------------
  1274. ANSI Sequences
  1275. --------------
  1276.  
  1277. All of the sequences listed here consist of Esc-[ followed by zero or more
  1278. numbers separated by semicolons followed by the command letter.  Therefore,
  1279. only the command letter will be listed.  X1, X2, etc refer to the specified
  1280. numeric argument, and usually are followed by a default value in parentheses.
  1281. All cursor positioning commands number rows and columns starting at 1.
  1282.  
  1283. @       insert X1 (1) blanks, shifting rest of line to the right
  1284. A       move cursor up X1 (1) lines
  1285. B       move cursor down X1 (1) lines
  1286. C       move cursor right X1 (1) positions
  1287. D       move cursor left X1 (1) positions
  1288. E       move cursor down X1 (1) lines, scroll if at bottom
  1289. F       move cursor up X1 (1) lines, scroll if at top
  1290. G       move cursor to position X1 (1) in current line
  1291. H       move cursor to row X1 (1), column X2 (1)
  1292. I       move to X1st (1) following horizontal tab position
  1293. J    case X1 (*):  0  clear from cursor to end of screen
  1294.                       1  clear from start of screen to cursor
  1295.                       2  clear screen
  1296.         * default is 0 for ANSI and VT52, 2 for ANSI-BBS and AVATAR
  1297. K       case X1 (0):  0  clear from cursor to end of line
  1298.                       1  clear from start of line to cursor
  1299.                       2  clear line
  1300. L       insert X1 (1) lines at cursor
  1301. M       delete X1 (1) lines at cursor
  1302. P       delete X1 (1) characters at cursor, rest of line shifts left
  1303. S       scroll up X1 (1) lines
  1304. T       scroll down X1 (1) lines
  1305. X       erase X1 (1) characters
  1306. Z       move cursor to X1st (1) preceding horizontal tab position
  1307. `       move cursor to position X1 (1) in current line
  1308. a       move cursor X1 (0) positions from current position in line
  1309. c    device attribute report
  1310.       responds by sending Esc-[-?-6-c (VT102)
  1311. d       move cursor to line X1
  1312. e       move cursor X1 (0) lines from current line
  1313. f       move cursor to row X1 (1), column X2 (1)
  1314. g    case X1 (0):  0   clear horizontal tab at current position
  1315.               3   clear all horizontal tab stops
  1316.               '>' clear all horizontal tab stops, then set tabs every
  1317.               N positions (i.e.  Esc-[->-5-g sets tabs every five
  1318.               columns)
  1319. h       select mode
  1320.     case X1 (0):  ?2  set emulation to ANSI
  1321.               ?3  select 132-column mode (if enabled by RBCONFIG)
  1322.                4  turn on insert mode
  1323.                       ?5  turn on inverted video
  1324.                       ?6  set top of scrolling region to current line, bottom
  1325.                           to bottom of screen (relative cursor positioning)
  1326.                       ?7  turn on wrap mode
  1327.               12  turn on local echo
  1328.               20  turn on newline mode (send CRLF when CR pressed)
  1329.              ?25  turn cursor on (make visible)
  1330. l       reset mode
  1331.         case X1 (0):  ?2  set emulation to VT52
  1332.                       ?3  select 80-column mode
  1333.                4  turn off insert mode
  1334.                       ?5  turn off inverted video
  1335.                       ?6  set top of scrolling region to topmost line, bottom
  1336.                           to bottom of screen (absolute cursor positioning)
  1337.                       ?7  turn off wrap mode
  1338.               12  turn off local echo
  1339.               20  turn off newline mode (send only CR when CR pressed)
  1340.              ?25  turn off cursor (make invisible)
  1341.               Note: may not work on all systems or in all video
  1342.               modes
  1343. m       select graphic rendition
  1344.         for each Xn in order,
  1345.                       0  reset attributes to white on black, turn off reverse
  1346.                          video
  1347.                       1  set bold
  1348.                       4  set underlined
  1349.                       5  set blinking
  1350.                       7  set reverse video
  1351.                       8  set invisible (black on black)
  1352.                      21  turn off bold
  1353.              22  turn off bold
  1354.                      24  turn off underlined
  1355.                      25  turn off blinking
  1356.                      27  turn off reverse video
  1357.              30  set foreground color
  1358.                       -
  1359.                        37
  1360.              40  set background color
  1361.                       -
  1362.                        47
  1363.         Note: Esc-[-m is equivalent to Esc-[-0-m
  1364. n       device status report
  1365.     case X1 (0):  5  report terminal status
  1366.              always sends Esc-[-0-n (terminal OK) to remote
  1367.               6  report cursor position
  1368.                          sends string Esc-[-row-;-col-R to remote system
  1369.              15  printer status
  1370.              sends Esc-[-?-1-3-n (no printer) if no printer defined
  1371.                    Esc-[-?-1-0-n if printer is ready
  1372.                    Esc-[-?-1-1-n if printer is not ready
  1373.                  [currently always sends ?13n]
  1374.                      25  report User Definable Key status
  1375.              always sends Esc-[-?-21-n (UDK's locked)
  1376.              26  report keyboard dialect
  1377.              always sends Esc-[-?-27-;-1-n (US ASCII)
  1378. r       set scrolling region to rows X1 (1) through X2 (lines-on-screen)
  1379. s       save cursor (may not be nested)
  1380. u       restore cursor
  1381. x    request terminal parameters (VT100)
  1382.     case X1 (0):  0  sends back string indicating bits, parity, speed
  1383.               1  sends back string indicating bits, parity, speed
  1384.     the string sent is
  1385.        Esc-[-<id>-;-<parity>-;-<bits>-;-<tspd>-;-<rspd>-;1;0x
  1386.     where <id> is 2 if X1 was 0 and 3 if X1 was 1
  1387.           <parity> is 1 for none, 2 for space, 3 for mark, 4 for odd,
  1388.               and 5 for even
  1389.           <bits> is 1 for 8, 2 for 7, 3 for 6, and 4 for 5 data bits
  1390.           <tspd> and <rspd> are the transmit and receive speeds:
  1391.              16 -> 110 bps
  1392.              32 -> 150 bps
  1393.              48 -> 300 bps
  1394.              56 -> 600 bps
  1395.              64 -> 1200 bps
  1396.              88 -> 2400 bps
  1397.             104 -> 4800 bps
  1398.             112 -> 9600 bps
  1399.             120 -> 19200 bps
  1400.             128 -> 38400 bps
  1401.             136 -> 57600 bps
  1402. z    reset terminal emulation (Heath H19)
  1403. blank    extended ANSI sequence
  1404.  
  1405. -----------------------
  1406. Extended ANSI sequences
  1407. -----------------------
  1408.  
  1409. If the command character for an ANSI sequence is a blank, the NEXT character
  1410. specifies the actual operation.
  1411.  
  1412. @       scroll left X1 (1) columns
  1413. A       scroll right X1 (1) columns
  1414.  
  1415. ------------------------
  1416. Special RBcomm sequences
  1417. ------------------------
  1418.  
  1419. When RBcomm receives a ^F, the following character specifies the actual
  1420. command.
  1421.  
  1422. ^x      display the IBM PC screen character corresponding to the control
  1423.         character
  1424. 0       turn off visual bell, ^G will beep
  1425. 1       turn on visual bell, ^G will flash the screen, but internally
  1426.         generated beeps still sound
  1427. 2       flash the screen
  1428. 3    beep even if visual bell turned on
  1429. 4       fill area.  Identical to AVATAR ^V^M (see below)
  1430. 5    repeat character.  Identical to AVATAR ^Y (see above)
  1431. 6    repeat pattern.  Identical to AVATAR ^V^Y (see below)
  1432. ;       set terminal emulation to AVATAR.  Does not affect any other settings.
  1433. <    set terminal emulation to VT102/ANSI.  Does not affect any other
  1434.       settings
  1435. =    set terminal emulation to ANSI-BBS.  Does not affect any other
  1436.       settings.
  1437. >    set terminal emulation to VT52.  Does not affect any other settings.
  1438. ?    query terminal emulation type.    Sends back <127><type> where type is
  1439.       'A' for VT102/ANSI, 'B' for ANSI-BBS, 'V' for VT52, and 'T' for
  1440.           AVATAR.
  1441. @       send identification (see Esc-Z)
  1442. A       if next character is '0' through '9', save the current screen in the
  1443.         specified slot.  This may silently fail if there is not enough memory
  1444.         available (thus the remote system must be capable of redrawing the
  1445.     screen itself).  For technically minded:  Screens are first stored in
  1446.     the near heap, then in the far heap (to store all ten screen requires
  1447.     a memory partition of about 85K using 80x25 screens, more if the screens
  1448.     are larger).  Any screens in the far heap are lost when swapping, such
  1449.     as running DSZ or shelling to DOS.  Using a 65K partition will allow
  1450.         you to store four or five screens in the near heap, none in the far
  1451.     heap.
  1452.     Note: this command will change in the next release
  1453. B       if next character is '0' through '9', restore the screen from the
  1454.         specified slot where a screen should have been previously saved with
  1455.         ^FA.  If no screen has been saved in the slot, command fails.  Sends
  1456.         a response of 127-<digit>-<status> to the remote system, where the
  1457.         digit is the slot number from the ^FB command, and status is 'Y' if
  1458.         the screen was restored or 'N' if the screen remains unchanged.
  1459.     Note: this command will change in the next release
  1460. C       if next character is '0' through '9', free the specified slot, so that
  1461.         it is as if no screen had ever been saved there.
  1462.     Note: this command will change in the next release
  1463.  
  1464. ------------------------
  1465. AVATAR command sequences
  1466. ------------------------
  1467.  
  1468. ^V^A    set screen attribute to low seven bits of following character
  1469. ^V^B    set blink
  1470. ^V^C    move cursor up a line
  1471. ^V^D    move cursor down a line
  1472. ^V^E    move cursor left one space
  1473. ^V^F    move cursor right one space
  1474. ^V^G    clear from cursor to end of line
  1475. ^V^H<r><c>  move cursor to row <r> and column <c>, where the upper left corner
  1476.             is 1,1
  1477. ^V^I    turn on insert mode until next AVATAR command (except ^Y and ^V^Y)
  1478. ^V^J    scroll area up.  Next five characters specify number of lines to
  1479.         scroll, top margin, left margin, bottom margin, and right margin (all
  1480.         margins are based on 1,1 being the upper left corner of the screen)
  1481. ^V^K    scroll area down.  Next five characters are as for ^V^J
  1482. ^V^L    clear area.  Next three characters specify screen attribute for cleared
  1483.         area, number of lines less one, and number of columns less one.  The
  1484.         blink bit of the attribute is ignored, and the current display attribute
  1485.         is set to the attribute of the cleared area.
  1486. ^V^M    fill area.  Next four characters specify screen attribute for filled
  1487.         area, character to fill with, number of lines less one, and number of
  1488.         columns less one.  The current display attribute is set to the filled
  1489.         attribute with blinking turned off.
  1490. ^V^N    delete character at cursor position
  1491. ^V^Y    repeat pattern.  The following character specifies the length of the
  1492.         pattern to be repeated, followed by the pattern, and finally followed
  1493.         by a single character indicating the number of times to repeat the
  1494.     pattern.  The pattern may contain command sequences, but is limited
  1495.     to 80 characters (longer patterns are truncated to 80 characters).
  1496.  
  1497. -----------------------------------------------------------------------------
  1498. Acknowledgements
  1499. ----------------
  1500.  
  1501. Thanks to Thomas Zerucha for his numerous comments and suggestions on all
  1502. three RBcomm releases (so far), many of which have been implemented.
  1503.  
  1504. Thanks to Walter Cox for his comments and suggestions on v2.81, one of the
  1505. included keyboard bindings, and his patience in testing new versions.
  1506.  
  1507. Thanks to Mike Weaver for his comments and suggestions, some of which have
  1508. been implemented.
  1509.  
  1510. -----------------------------------------------------------------------------
  1511. Program History
  1512. ---------------
  1513.  
  1514. v2.72  9/3/89   first public release
  1515. v2.81  10/4/89    second public release
  1516. v2.82  10/8/89    added AUTO "key" for auto-execute macro which is called on
  1517.           connecting
  1518. v2.83  10/17/89 added OPEN_LOG and CLOSE_LOG macro commands
  1519.         enable speeds above 9600 (previously only available from
  1520.           dialing directory).  Not tested yet.
  1521. v2.84  10/22/89 added timed-call option in dialing directory
  1522. v2.85  10/28/89 made break length configurable
  1523.         rewrote serial port interrupt handler in assembler
  1524.         read original serial port parameters
  1525.        11/3/89    speeds >9600 OK.
  1526. v2.86  11/18/89 16550 support, untested
  1527.         prompt for hangup on dialing with carrier detect active
  1528. v2.90  12/1/89    display countdown of time remaining until dial times out
  1529.         added WHEN, ENDWHEN, and AUTO_ZMODEM macro commands
  1530. v2.91  12/10/89 macro decompiler omitted "Auto" on AUTO macro, fixed
  1531. v2.92  12/21/89 use same input routines for learning macros as elsewhere
  1532.         fixed some incorrect keycodes in MACRO.COM
  1533.                 added #nnn keycode specification to MACRO.COM
  1534. v2.93  12/26/89 added MESSAGE, NOTIFY, DELAYED, CANCEL_DELAYED macro commands
  1535.                 window now pops up after background file xfer under DESQview
  1536.                 OnLoad macro "key" added.
  1537. v2.94  12/29/89 slight reduction in size of executable
  1538.                 added CALL macro command
  1539. v2.95  12/30/09 added AVATAR command set
  1540.                 Gray+ and Gray- now distinct from + and -
  1541. v2.96  12/31/89 added 132-column support
  1542.         16550A support seems to be working
  1543. v2.97  1/1/90   macro compiler improvements and bugfixes
  1544.                 additional minor size optimizations
  1545. v2.98  1/2/90   added PASSWORD macro command
  1546. v3.00  1/6/90    added "allow NumLock changes" in RBCONFIG
  1547.         minor bugfixes
  1548. v3.01  1/6/90    fixed fairly obscure but major cosmetic bug
  1549.         (third public release)
  1550. v3.02  1/14/90    minor bugfixes, some H19 extensions added
  1551.         input line editor now blinks control characters rather than
  1552.           using ^X notation, ^BS acts as BS, Alt-D inserts ASCII 127
  1553.         made existing functions available as new macro commands
  1554.           FDELETE, AWAITKEY, KFLUSH, and ABORT.
  1555.         (unreleased)
  1556. v3.03  1/20/90    removed key-reassignment under Alt-M, saving over 300 bytes
  1557.         added VERBOSE, ECHO, and TRANSLATE_BS macro commands
  1558.         added answerback message
  1559.         (unreleased)
  1560. v3.04  2/2/90    changed macro file format to allow larger macros
  1561.         added #include macro file inclusion command
  1562.         added MESSAGEBOX, LOWER_DTR and ANSWERBACK macro commands.
  1563.         (unreleased)
  1564. v3.05  2/10/90    changed macro file again to allow control key reassignment
  1565.                 added ANSI Privacy Message (Esc-^) command
  1566.         (limited release)
  1567. v3.06  2/25/90    made existing function CANCEL_NOTIFY available as macro command
  1568.         maximum delay time now 3600 seconds
  1569.         (unreleased)
  1570. v3.10  3/10/90    added VIEW macro command, bound to Alt-V (old Alt-V now Alt-Y)
  1571.         added support for multiple comm ports without reconfiguring
  1572.         added %I in EXEC command-tail
  1573.         (limited release)
  1574. v3.11  3/31/90    added IF, UNTIL, ABORT_UNTIL macros
  1575.                 improved handling of multiple comm ports
  1576.         added #ignore to macro compiler
  1577.         fixed minor bug in disk-swapping code
  1578.         (unreleased)
  1579. v3.12  4/21/90    made SENDFILE and RECEIVEFILE available as macro commands
  1580.         fixed origin-mode & scrolling-region bugs in terminal emulator
  1581.                 added %a and %i in EXEC command-tail
  1582.         added seamless Puma file transfers
  1583.         (limited release)
  1584.        4/28/90    (fourth public release)
  1585.